/**
 * 模块化封装后台api请求方法
 * 步骤：
 * 1.导入封装过的axios方法(utils下)
 * 2.导出某个接口的请求方法
 * 目的：
 * 1.方便复用：使用时不再需要导入request，直接导入该文件，调用login()方法，传入不同参数即可
 * 2.易于管理：如果接口变了，只用改这一处
 */

import request from '../utils/request'

/**
 * 登录后台接口
 * @param {*} data {mobile:手机号, code: 验证码}
 * @returns
 */
export function login (data) {
  // 返回一个promise对象
  return request({
    url: 'authorizations',
    method: 'post',
    data
  })
}

/**
 * 关注用户
 * @param {*} target 用户ID
 */
export function followApi (target) {
  return request.post('user/followings', { target })
}

/**
 * 取关用户
 * @param {*} target 用户ID
 */
export function unFollowApi (target) {
  return request.delete(`user/followings/${target}`)
}

/**
 * 获取用户个人信息
 * request Headers中携带了token
 */
export function getUserInfo () {
  return request.get('user')
}

/**
 * 获取个人中心用户编辑资料信息
 */
export function getUserProfile () {
  return request.get('user/profile')
}

/**
 * 修改用户头像
 * @param {File} photo - 选中图片后的文件对象
 */
export const updateUserPhoto = (photo) => {
  // 底层基于xhr  发送一个formdata就是上传
  // 1.创建formdata实例
  const formdata = new FormData()
  // 2.把要上传的文件对象加入到formdata实例上
  formdata.append('photo', photo)
  return request.patch('user/photo', formdata)
}

/**
 * 修改用户信息
 * @param {String} name - 用户名
 * @param {Integer} gender - 性别 0 男 1 女
 * @param {String} birthday - 生日
 */
export const updateUserInfo = ({ name, gender, birthday }) => {
  return request.patch('user/profile', { name, gender, birthday })
}
